package cn.tedu.springbootrabbitmq.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 配置类
 */
@Configuration
public class RabbitMqConfig {
    private static final String TEST_QUEUE = "test_queue";//队列名称
    private static final String TEST_EXCHANGE = "test_exchange";//交换机名称
    private static final String TEST_ROUTINGKEY = "test_rote";//路由键名称

    //创建队列
    @Bean
    public Queue testQueue(){
        return new Queue(TEST_QUEUE);
    }

    //创建交换机
    @Bean
    public DirectExchange testExchange(){
        return new DirectExchange(TEST_EXCHANGE);
    }

    /**
     * 使用BindingBuilder.bind()方法绑定队列
     * 通过.to()方法指定要绑定的交换机
     * 通过.with()方法设置路由键(TEST_ROUTING_KEY)
     * 这样就建立了队列和交换机之间的绑定关系，消息可以通过指定的路由键从交换机路由到对应的队列。
     * @return
     */
    @Bean
    public Binding testBinding() {
        return BindingBuilder.bind(testQueue()).to(testExchange()).with(TEST_ROUTINGKEY);
    }

}
